{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "d9d5b99e",
   "metadata": {},
   "source": [
    "支持向量机对居中后的数据效果较好，处理前需要标准化"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c5f63911",
   "metadata": {},
   "source": [
    "# 线性SVM分类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "764a024a",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-11T12:44:17.905620Z",
     "start_time": "2023-08-11T12:44:13.998476Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[(&#x27;scaler&#x27;, StandardScaler()),\n",
       "                (&#x27;linear_svc&#x27;, LinearSVC(C=1, loss=&#x27;hinge&#x27;))])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" ><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">Pipeline</label><div class=\"sk-toggleable__content\"><pre>Pipeline(steps=[(&#x27;scaler&#x27;, StandardScaler()),\n",
       "                (&#x27;linear_svc&#x27;, LinearSVC(C=1, loss=&#x27;hinge&#x27;))])</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" ><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">StandardScaler</label><div class=\"sk-toggleable__content\"><pre>StandardScaler()</pre></div></div></div><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" ><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">LinearSVC</label><div class=\"sk-toggleable__content\"><pre>LinearSVC(C=1, loss=&#x27;hinge&#x27;)</pre></div></div></div></div></div></div></div>"
      ],
      "text/plain": [
       "Pipeline(steps=[('scaler', StandardScaler()),\n",
       "                ('linear_svc', LinearSVC(C=1, loss='hinge'))])"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "from sklearn import datasets\n",
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.svm import LinearSVC\n",
    "%matplotlib inline\n",
    "\n",
    "iris = datasets.load_iris()\n",
    "x = iris['data'][:, (2,3)]  # 花瓣长和宽两个属性\n",
    "y = (iris['target'] == 2).astype(np.float64)  # 选正例\n",
    "\n",
    "svm_clf = Pipeline([\n",
    "    ('scaler', StandardScaler()),\n",
    "    ('linear_svc', LinearSVC(C=1, loss='hinge')),\n",
    "])\n",
    "\n",
    "svm_clf.fit(x, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "9fde5e63",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-11T12:44:22.341891Z",
     "start_time": "2023-08-11T12:44:22.333221Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1.])"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svm_clf.predict([[5.5, 1.7]])  # 预测"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "696950f1",
   "metadata": {},
   "source": [
    "# 非线性SVM分类"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ab7fc22d",
   "metadata": {},
   "source": [
    "通过添加多项式特征实现非线性分类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "921b5edf",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-11T12:44:24.489023Z",
     "start_time": "2023-08-11T12:44:24.466084Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-2 {color: black;background-color: white;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[(&#x27;poly_features&#x27;, PolynomialFeatures(degree=3)),\n",
       "                (&#x27;scaler&#x27;, StandardScaler()),\n",
       "                (&#x27;svm_clf&#x27;, LinearSVC(C=10, loss=&#x27;hinge&#x27;, max_iter=10000))])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" ><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">Pipeline</label><div class=\"sk-toggleable__content\"><pre>Pipeline(steps=[(&#x27;poly_features&#x27;, PolynomialFeatures(degree=3)),\n",
       "                (&#x27;scaler&#x27;, StandardScaler()),\n",
       "                (&#x27;svm_clf&#x27;, LinearSVC(C=10, loss=&#x27;hinge&#x27;, max_iter=10000))])</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-5\" type=\"checkbox\" ><label for=\"sk-estimator-id-5\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">PolynomialFeatures</label><div class=\"sk-toggleable__content\"><pre>PolynomialFeatures(degree=3)</pre></div></div></div><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-6\" type=\"checkbox\" ><label for=\"sk-estimator-id-6\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">StandardScaler</label><div class=\"sk-toggleable__content\"><pre>StandardScaler()</pre></div></div></div><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-7\" type=\"checkbox\" ><label for=\"sk-estimator-id-7\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">LinearSVC</label><div class=\"sk-toggleable__content\"><pre>LinearSVC(C=10, loss=&#x27;hinge&#x27;, max_iter=10000)</pre></div></div></div></div></div></div></div>"
      ],
      "text/plain": [
       "Pipeline(steps=[('poly_features', PolynomialFeatures(degree=3)),\n",
       "                ('scaler', StandardScaler()),\n",
       "                ('svm_clf', LinearSVC(C=10, loss='hinge', max_iter=10000))])"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.datasets import make_moons\n",
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "\n",
    "x, y = make_moons(n_samples=100, noise=0.15)\n",
    "polynomial_svm_clf = Pipeline([\n",
    "    (\"poly_features\", PolynomialFeatures(degree=3)),\n",
    "    (\"scaler\", StandardScaler()),\n",
    "    (\"svm_clf\", LinearSVC(C=10, loss='hinge', max_iter=10000)),\n",
    "])\n",
    "\n",
    "polynomial_svm_clf.fit(x, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "b8224147",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-11T12:44:39.031951Z",
     "start_time": "2023-08-11T12:44:39.023224Z"
    }
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "def plot_dataset(X, y, axes):\n",
    "    plt.plot(X[:, 0][y==0], X[:, 1][y==0], \"bs\")\n",
    "    plt.plot(X[:, 0][y==1], X[:, 1][y==1], \"g^\")\n",
    "    plt.axis(axes)\n",
    "    plt.grid(True, which='both')\n",
    "    plt.xlabel(r\"$x_1$\", fontsize=20)\n",
    "    plt.ylabel(r\"$x_2$\", fontsize=20, rotation=0)\n",
    "\n",
    "def plot_predictions(clf, axes):\n",
    "    x0s = np.linspace(axes[0], axes[1], 100)\n",
    "    x1s = np.linspace(axes[2], axes[3], 100)\n",
    "    x0, x1 = np.meshgrid(x0s, x1s)  # 数据网格化\n",
    "    X = np.c_[x0.ravel(), x1.ravel()]\n",
    "    y_pred = clf.predict(X).reshape(x0.shape)\n",
    "    y_decision = clf.decision_function(X).reshape(x0.shape)\n",
    "    plt.contourf(x0, x1, y_pred, cmap=plt.cm.brg, alpha=0.2)  # 根据预测结果生成等高线\n",
    "    plt.contourf(x0, x1, y_decision, cmap=plt.cm.brg, alpha=0.1)  # 根据预测结果的概率生成等高线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "4725696a",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-08-11T12:44:40.869467Z",
     "start_time": "2023-08-11T12:44:40.387866Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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umjUtt01a9aIK6+8ctT99+zZIxYsWCAsFosoKSkRTz/9dJxbHBvh9Puhhx4S55xzjpgyZYrIysoSl19+uXjrrbcUaHXk/Fuux/5bs2aNEEK/1zrcfuvhWgshAvZ57O9qPV7zSPodi2suffnJiYiIiGgSLEdAREREFCIGJyIiIqIQMTgRERERhYjBiYiIiChEDE5EREREIWJwIiIiIgoRgxMRERFRiBiciIiIiELE4EREREQUIgYnIiIiohAxOBERERGFiMGJiIiIKEQMTkSkOz09PcjPz4ckSSgtLYXH4wl4v/7+flx++eWQJAlJSUnYs2dPfBtKRJrD4EREupOamop77rkHAFBdXY1t27aNu48QAqtXr8ZHH30ESZKwfft2LF++PL4NJSLNkYQQQulGEBHF2sDAAM4991w4HA4UFxfj+PHjsFgswx9fv349fv3rXwMAHn30Ufz4xz9WqqlEpCEccSIiXUpKSsLPf/5zAMDp06fxu9/9bvhjjz/++HBouvPOOxmaiChkHHEiIt3yer2YM2cOjh8/junTp+PEiRN48803cdNNN8Hn8+Gmm27CH/7wB5hM/BuSiELD4EREuvbKK6/glltuAQB873vfw8svv4z+/n5cccUVeOedd5CUlKRwC4lISxiciEjXhBC46KKLUFlZOXzb3Llz8eGHH8JqtQZ93I4dO/DBBx/g0KFDOHz4MNxuN1544QXceuutsreZiNSL49NEpGuSJGHt2rXD79tsNvztb3+bMDQBwM9+9jM899xzOH36NOx2u8ytJCKtYHAiIl2rqqrCfffdN/x+T09PSNNzzz//PGpqatDc3Ix169bJ2UQi0hAGJyLSraamJlx99dVoaWlBTk4OgKHg9OCDD0762KuuugrFxcVyN5GINIbBiYh0qaenB9deey1OnTqFtLQ0vPPOO7jhhhsAAM8++ywcDoeyDSQiTWJwIiLdGRwcxE033YSDBw8iISEBf/zjH3HRRRdh48aNkCQJAwMD2Lhxo9LNJCINYnAiIt1Zt24d/va3vwEAnn76aaxatQoAcP755+PGG28EAGzfvh3Hjx9XrI1EpE0MTkSkK/fffz+2bt0KALj33ntx2223jfu4yWSC1+vFvffeq0QTiUjDGJyISDe2bt06PAW3Zs0aPPDAA+PuM3fuXHznO98BAPzpT38aVd+JiGgyDE5EpAs7d+4cLhtw1VVX4be//W3Q+953330wm80QQuCnP/1pvJpIRDqQoHQDiIhi4ZprroHH4wnpvrNnz8bg4KDMLSIiPeKIExEREVGIeFYdEVEAzz//PD788EMAwOHDh/Hxxx/jsssuw8yZMwEAN9xww3BdKCIyDk7VEREF8OGHH2L79u2jbvvoo4/w0UcfAQBKSkoYnIgMiCNORERERCHiGiciIiKiEDE4EREREYWIwYmIiIgoRAxORERERCFicCIiIiIKEYMTERERUYgYnIiIiIhCxOBEREREFCIGJyIiIqIQMTgRERERhYjBiYiIiChEDE5EREREIfr/AfWlwjQRAHjqAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_predictions(polynomial_svm_clf, [-1.5, 2.5, -1, 1.5])\n",
    "plot_dataset(x, y, [-1.5, 2.5, -1, 1.5])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7df5652e",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-01-13T08:29:49.767366Z",
     "start_time": "2022-01-13T08:29:49.756397Z"
    }
   },
   "source": [
    "## 多项式内核"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "b701f58e",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-01-14T03:35:07.634351Z",
     "start_time": "2022-01-14T03:35:07.620389Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.svm import SVC"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f4f12b27",
   "metadata": {},
   "source": [
    "### 应用模型"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "13d20d1f",
   "metadata": {},
   "source": [
    "#### 网格搜索参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "cf33a636",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-01-14T03:35:07.775143Z",
     "start_time": "2022-01-14T03:35:07.635349Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'C': 3, 'degree': 4}\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "SVC(C=3, coef0=1, degree=4, kernel='poly')"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "param_grid = [\n",
    "    {'degree': [2, 3, 4, 5], 'C': [ 3, 5, 7]},\n",
    "]\n",
    "\n",
    "scl = StandardScaler()\n",
    "x_s = scl.fit_transform(x)\n",
    "svm_clf = SVC(kernel='poly', degree=3, coef0=1, C=5)  # 核技巧使用多项式\n",
    "\n",
    "grid_search = GridSearchCV(svm_clf, param_grid, cv = 5,\n",
    "                          scoring='neg_mean_squared_error',\n",
    "                          return_train_score=True)\n",
    "grid_search.fit(x_s, y)  # 开始搜索最佳参数\n",
    "\n",
    "print(grid_search.best_params_)  # 输出最佳参数，在属性 .best_params_ 中\n",
    "grid_search.best_estimator_  # 最佳模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "91c29890",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-01-14T03:35:07.790974Z",
     "start_time": "2022-01-14T03:35:07.776973Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Pipeline(steps=[('scaler', StandardScaler()),\n",
       "                ('svm_clf', SVC(C=3, coef0=1, degree=4, kernel='poly'))])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly_kernel_svm_clf = Pipeline([\n",
    "    ('scaler', StandardScaler()),\n",
    "    ('svm_clf', SVC(C=3, coef0=1, degree=4, kernel='poly')),  # 核为'poly'，三阶多项式，coef0 核函数常数项\n",
    "])\n",
    "poly_kernel_svm_clf.fit(x, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "15765844",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-01-14T03:35:07.933557Z",
     "start_time": "2022-01-14T03:35:07.791930Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_predictions(poly_kernel_svm_clf, [-1.5, 2.5, -1, 1.5])\n",
    "plot_dataset(x, y, [-1.5, 2.5, -1, 1.5])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fa0b840a",
   "metadata": {},
   "source": [
    "#### 过拟合情况（degree=10）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "fd1625a9",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-01-14T03:35:08.076212Z",
     "start_time": "2022-01-14T03:35:07.935547Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "poly_kernel_svm_clf = Pipeline([\n",
    "    ('scaler', StandardScaler()),\n",
    "    ('svm_clf', SVC(C=3, coef0=1, degree=10, kernel='poly')),  # 核为'poly'，三阶多项式，coef0 核函数常数项\n",
    "])\n",
    "poly_kernel_svm_clf.fit(x, y)\n",
    "plot_predictions(poly_kernel_svm_clf, [-1.5, 2.5, -1, 1.5])\n",
    "plot_dataset(x, y, [-1.5, 2.5, -1, 1.5])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "48641ee2",
   "metadata": {},
   "source": [
    "## 相似特征"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "12e68b86",
   "metadata": {},
   "source": [
    "高斯RBF\n",
    "\n",
    "$\\phi_r(x,l)=e^{(-\\gamma||x-l||^2)}$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0b1958f4",
   "metadata": {},
   "source": [
    "## 高斯RBF内核"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "95efccc4",
   "metadata": {},
   "source": [
    "实际上是类似钟形分割"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "42d4193b",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-01-14T03:35:08.091544Z",
     "start_time": "2022-01-14T03:35:08.077169Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Pipeline(steps=[('scaler', StandardScaler()),\n",
       "                ('svmclf', SVC(C=1000, gamma=0.1))])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rbf_kernel_svm_clf = Pipeline([\n",
    "    ('scaler', StandardScaler()),\n",
    "    ('svmclf', SVC(kernel='rbf', gamma=0.1, C=1000))  # C和gamma都与拟合程度正相关，过拟合时需要降低取值\n",
    "])\n",
    "\n",
    "rbf_kernel_svm_clf.fit(x, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "04f3b512",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-01-14T03:35:08.297884Z",
     "start_time": "2022-01-14T03:35:08.093125Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_predictions(rbf_kernel_svm_clf, [-1.5, 2.5, -1, 1.5])\n",
    "plot_dataset(x, y, [-1.5, 2.5, -1, 1.5])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "39b1f426",
   "metadata": {},
   "source": [
    "### 选择核函数"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "feff2c90",
   "metadata": {},
   "source": [
    "先尝试线性核函数（ LinearSVC比SVC(kernel='linear)快得多 ），特别是训练集很大时，如果训练集不太大，可以尝试高斯RBF内核，也可以用网格搜索尝试其他核函数。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "05662a37",
   "metadata": {},
   "source": [
    "## 计算复杂度"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5dae2c6a",
   "metadata": {},
   "source": [
    "| 类            | 时间复杂度             | 核外支持  | 需要缩放   | 核技巧  |\n",
    "| ------------- | -------------------- | -------- | -------- | ------ |\n",
    "| LinearSVC     | O(m×n)             | 否       | 是       | 否     |\n",
    "| SGDClassifier | O(m×n)             | 是       | 是       | 否     |\n",
    "| SVC           | O(m^2×n)~O(m^3×n) | 否       | 是       | 是     |"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "df85aae5",
   "metadata": {},
   "source": [
    "# SVM回归（SVR）"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b40af41a",
   "metadata": {},
   "source": [
    "## LinearSVR（更快）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "8b2b339a",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-01-14T03:44:57.255559Z",
     "start_time": "2022-01-14T03:44:57.244575Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearSVR(epsilon=1.5)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.svm import LinearSVR\n",
    "svm_reg = LinearSVR(epsilon=1.5)  # 控制支持向量间的间隔宽度\n",
    "svm_reg.fit(x, y)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fd01ba30",
   "metadata": {},
   "source": [
    "## SVR+核技巧"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aecaa4ec",
   "metadata": {},
   "source": [
    "结果相同，速度较慢"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "36d360be",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-01-14T03:50:05.502608Z",
     "start_time": "2022-01-14T03:50:05.484656Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVR(C=100, degree=2, kernel='poly')"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.svm import SVR\n",
    "svm_poly_reg = SVR(kernel='poly', degree=2, C=100, epsilon=0.1)\n",
    "svm_poly_reg.fit(x, y)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.12"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {
    "height": "322.99px",
    "width": "342.99px"
   },
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "position": {
    "height": "579.85px",
    "left": "1165.2px",
    "right": "20px",
    "top": "120px",
    "width": "350px"
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
